﻿/**
* jQuery EasyUI 1.4.3
* Copyright (c) 2009-2015 www.jeasyui.com. All rights reserved.
*
* Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt
* To use it on other terms please contact us at info@jeasyui.com
* http://www.jeasyui.com/license_commercial.php
*
* jQuery EasyUI 通用插件基础库 扩展
* jeasyui.extensions.base.ajax.js
* 开发 流云
* 由 落阳 整理
* 最近更新：2015-12-29
*
* 依赖项：
*   1、jquery.jdirk.js
*   2、jeasyui.extensions.base.loading.js
*   3、jeasyui.extensions.messager.progress.js
*   4、jeasyui.extensions.messager.alert.js
*
* Copyright (c) 2015 ChenJianwei personal All rights reserved.
*/
(function ($) {

    $.util.namespace("$.easyui");

    // 获取或更改 jQuery EasyUI 部分组件的通用错误提示函数；该方法定义如下重载方式：
    //      function()      : 获取 jQuery EasyUI 部分组件的通用错误提示函数；
    //      function(error) : 更改 jQuery EasyUI 部分组件的通用错误提示函数；
    // 备注：该方法会设置如下组件的 onLoadError 事件；
    //          easyui-form
    //          easyui-panel
    //          easyui-window
    //          easyui-dialog
    //          easyui-tree
    //          easyui-datagrid
    //          easyui-propertygrid
    //          easyui-treegrid
    //          easyui-combobox
    //          easyui-combotree
    //          easyui-combogrid
    //      同时还会设置 jQuery-ajax 的通用错误事件 error。
    $.easyui.ajaxError = function (error) {
        if (!arguments.length) {
            return $.ajaxSettings.error || $.fn.form.defaults.onLoadError;
        }
        $.fn.form.defaults.onLoadError = error;

        $.fn.panel.defaults.onLoadError = error;
        $.fn.window.defaults.onLoadError = error;
        $.fn.dialog.defaults.onLoadError = error;

        $.fn.tree.defaults.onLoadError = error;
        $.fn.datagrid.defaults.onLoadError = error;
        $.fn.datalist.defaults.onLoadError = error;
        $.fn.propertygrid.defaults.onLoadError = error;
        $.fn.treegrid.defaults.onLoadError = error;

        $.fn.combobox.defaults.onLoadError = error;
        $.fn.combotree.defaults.onLoadError = error;
        $.fn.combogrid.defaults.onLoadError = error;

        $.ajaxSetup({
            error: error
        });
    };


    // 备份 jQuery ajax 方法的默认参数。
    $.util.namespace("$.easyui.ajax");
    $.easyui.ajax.defaults = $.extend({}, $.ajaxSettings);


    // 定义用于处理 jQuery 和 jQuery EasyUI 组件加载远程数据出错时的通用错误提示。
    $.easyui.error = function (XMLHttpRequest, textStatus, errorThrown) {
        $.messager.progress("close");
        if ($.easyui.messager && $.easyui.messager != $.messager) {
            $.easyui.messager.progress("close");
        }
        $.easyui.loaded();
        $.easyui.loaded(true);

        var msg = (XMLHttpRequest && !$.string.isNullOrWhiteSpace(XMLHttpRequest.responseText)
            ? "如果该问题重复出现，请联系您的系统管理员并反馈该故障。<br />" +
              "错误号：" + XMLHttpRequest.status + "(" + XMLHttpRequest.statusText + ")；<hr />" +
              XMLHttpRequest.responseText
            : "系统出现了一个未指明的错误，如果该问题重复出现，请联系您的系统管理员并反馈该故障。");
        var win = $.easyui.messager && $.easyui.messager != $.messager
            ? $.easyui.messager.alert("错误提醒", msg, "error")
            : $.messager.alert("错误提醒", msg, "error"),
            opts = win.window("options"),
            panel = win.window("panel"),
            width = panel.outerWidth(),
            height = panel.outerHeight();
        if (width > 800 || height > 800) {
            win.window("resize", {
                width: Math.min(width, 800), height: Math.min(height, 800)
            });
        }
        win.window("center");
    };


    // 更改 jQuery EasyUI 部分组件的通用错误提示。
    $.easyui.ajaxError($.easyui.error);

})(jQuery);